package com.hzw.saas.api.product;

import com.hzw.saas.api.product.dto.OrderCacheDto;

/**
 * 订单缓存接口
 *
 * @author zzl
 * @since 01/27/2021
 */
public interface IOrderCacheService {

    /**
     * 根据订单ID获取缓存订单
     *
     * @param orderId 订单ID
     * @return
     */
    OrderCacheDto getByOrder(String orderId);

    /**
     * 根据支付号获取缓存订单
     *
     * @param payNo
     * @return
     */
    OrderCacheDto getByPayNo(String payNo);

    /**
     * 增加购买订单缓存
     *
     * @param userId
     * @param itemId
     * @param hpcAccountId
     * @param payType
     * @return
     */
    OrderCacheDto addItemOrder(String userId, String itemId, String hpcAccountId, Integer payType);

    /**
     * 增加支付订单缓存
     *
     * @param userId
     * @param payValue
     * @param payType
     * @return
     */
    OrderCacheDto addBalanceOrder(String userId, double payValue, Integer payType);

    /**
     * 创建订单缓存
     * 缓存时间默认为30分钟
     *
     * @param orderCacheDto 订单提交信息
     * @return
     */
    OrderCacheDto add(OrderCacheDto orderCacheDto);

    /**
     * 创建订单缓存
     *
     * @param orderCacheDto 订单提交信息
     * @param time          缓存时间(秒) time要大于0 如果time小于等于0 将设置无限期
     * @return
     */
    OrderCacheDto add(OrderCacheDto orderCacheDto, long time);

    /**
     * 删除订单缓存
     *
     * @param orderId 订单ID
     * @return
     */
    OrderCacheDto deleteByOrder(String orderId);

    /**
     * 根据
     *
     * @param payNo
     * @return
     */
    OrderCacheDto deleteByPayNo(String payNo);

}
